package com.liliudong.template.biz.service.sys;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liliudong.template.common.constant.SysRoleDataScopeEnum;
import com.liliudong.template.common.dto.sys.SysRoleAddOrUpdateDTO;
import com.liliudong.template.common.entity.sys.SysRole;
import com.liliudong.template.common.vo.PageVO;
import com.liliudong.template.common.vo.sys.SysRoleDetailVO;
import com.liliudong.template.common.vo.sys.SysRolePageVO;

import java.util.List;
import java.util.Set;

public interface SysRoleService extends IService<SysRole>{
	/**
	 * 按用户id获取角色忽略数据权限
	 *
	 * @param userId 用户id
	 * @return {@link List }<{@link SysRole }>
	 */
	List<SysRole> listByUserIdIgnoreDataPermission(long userId);

	/**
	 * 按用户id列出数据范围忽略数据权限
	 *
	 * @param userId 用户id
	 * @return {@link Set }<{@link Integer }>
	 */
	Set<SysRoleDataScopeEnum> listDataScopeByUserIdIgnoreDataPermission(long userId);

	/**
	 * 添加一个
	 *
	 * @param sysRoleAddOrUpdateDTO sys角色添加或更新dto
	 */
	void addOne(SysRoleAddOrUpdateDTO sysRoleAddOrUpdateDTO);

	/**
	 * 按id删除
	 *
	 * @param id 身份证件
	 */
	void deleteById(Long id);

	/**
	 * 按id修改
	 *
	 * @param id                    身份证件
	 * @param sysRoleAddOrUpdateDTO sys角色添加或更新dto
	 */
	void modifyById(Long id, SysRoleAddOrUpdateDTO sysRoleAddOrUpdateDTO);

	/**
	 * 查询页面
	 *
	 * @param current 现在
	 * @param size    大小
	 * @return {@link IPage }<{@link SysRolePageVO }>
	 */
	PageVO<SysRolePageVO> queryPage(Long current, Long size);

	/**
	 * id明细
	 *
	 * @param id 身份证件
	 * @return {@link SysRoleDetailVO }
	 */
	SysRoleDetailVO detailById(Long id);
}
